package commonClass;

/**
 * String类
 */
@SuppressWarnings("all")
public class String01 {

    public static void main(String[] args) {
        /*
            1)String对象用于保存字符串，也就是一组字符序列
            2)字符串常量对象是用双引号括起的字符序列。例："你好"、"12.97"、"boy" 等
            3)字符串的字符使用 Unicode 字符编码，一个字符占两个字节
            4)String类较常用的构造器
              String s1 = new String();
              String s2 = new String(String original);
              String s3 = new String(char[] a);
              String s4 = new String(char[] a, int startIndex, int count)
            5)String 实现了 Serializable ，说明 String 可以串行化
            6)String 实现了 Comparable接口，说明 String 对象可以比较
         */

        String name = "jack";
        name = "tom";
        final char[] value = {'a', 'b', 'c'};
        char[] v2 = {'t', 'o', 'm'};
        value[0] = 'H';
        //value = v2;   不可以修改value地址

        /*创建String对象的两种方式
            1.直接赋值 String s = "lmy";
              分析：先从常量池查看是否有"lmy"数据空间，如果有直接指向；如果没有则创建后指向。最终s指向常量池的空间地址
            2.调用构造器 String s = new String("lmy");
              分析：先在堆中创建空间，里面维护了value属性，指向常量池的lmy空间，如果常量池没有"lmy"，创建后value指向它。最终s指向堆中空间地址
        */
    }
}
